﻿//+--------------------------------------------------------------------------------------------------
//
//Description: Custom Json Serialization for view def option
//Author: Aravind Ramarathinam (aravr@microsoft.com)
//Copyright © Microsoft Corporation
//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
//You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 
//
//THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, 
//INCLUDING WITHOUT LIMITATION ANY IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT. 
//See the Apache Version 2.0 License for specific language governing permissions and limitations under the License.
// 
//--------------------------------------------------------------------------------------------------------------------------------------------------------

using System;
using System.Collections.Generic;
using System.Web.Script.Serialization;

namespace VmroleAuthor.Models
{    
    public class ViewDefOptionValueJsonConverter : JavaScriptConverter
    {
        public override object Deserialize(IDictionary<string, object> dictionary, Type type, JavaScriptSerializer serializer)
        {         
            OptionValue op = new OptionValue();
            foreach (KeyValuePair<string, object> keyValuePair in dictionary)
            {
                op.Key = keyValuePair.Key;
                op.Value = keyValuePair.Value as string;
                break;
            }
            return op;
        }

        public override IDictionary<string, object> Serialize(object obj, JavaScriptSerializer serializer)
        {
            var json = new Dictionary<string, object>();
            OptionValue op = obj as OptionValue;
            if ((op != null) && (op.Key != null))
            {
                json.Add(op.Key, op.Value);
            }

            return json;
        }

        public override IEnumerable<Type> SupportedTypes
        {
            get { return new[] { typeof(OptionValue) }; }
        }
    }
}
